"""tensor的计算"""
import tensorflow as tf
import numpy as np

"""
    算数运算主要包含了：
    加:tf.add
    减:tf.subtract
    乘:tf.multiply 注意这里是矩阵的每个值相乘
    除:tf.divide
    取对数：tf.math.log
    取指数:tf.pow

"""
"""矩阵的加法"""
a = tf.constant([[3, 5], [4, 8]])
b = tf.constant([[1, 6], [2, 9]])


print(tf.add(a, b))

print(tf.multiply(a,b))

"""矩阵乘法运算"""

print(tf.matmul(a, b))


"""
张量的数据统计主要包括以下内容
tf.reduce_min/max/mean() 求解最小值，最大值，和均值函数
tf.argmax()/tf.argmin() 求最大值最小值
tf.equal() 逐个对照两个张量是否相等
tf.unique() 除去张量中重复的元素
tf.nn.in_top_k(prediction, target, K) 用于即使算预测值和真实值上是否相等，返回一个bool类型的张量

"""

argmax_simple_1 = tf.constant([[1,3],[2,5],[7,5]])
max_sample_1 = tf.argmax(argmax_simple_1,axis=0)
max_sample_2 = tf.argmax(argmax_simple_1,axis=1)

print(max_sample_1.numpy())
print(max_sample_2.numpy())

"""
基于维度的操作
tf中tf.reduce_等一系列操作都造张量维度的减少，这一系列操作都可以对一个张量在维度上的元素进行操作，如按行求平均值，求取张量中所有的元素的乘积等

常用的包括如下内容：
tf.reduce_sum()  加法
tf.reduce_prod() 乘法
tf.reduce_min()  最小
tf.reduce_max()  最大
tf.reduce_mean() 均值
tf.reduce_all()  逻辑和
tf.reduce_any()  逻辑或
tf.reduce_logsumexp(log(sum(exp()))等操作)
例子
tensor.reduce_sum(input_tensor,axis= None,keepdims=False,name = None)
input_tensor 输入张量
axix 指定需要计算的轴，如果不指定，则计算所有元素的均值
keepdims 是否降低维度，设置为true，是输出的结果保持输入的tensor的形状，如果为false 输出结果会降维
name 操作名称

"""